#include<stdio.h>
int main()
{
	int m,n,p,r,t;
	printf("输入两个正整数：");
	scanf("%d %d",&m,&n);
	p=m*n;
	if(m>n)
	{
		t=m;
		m=n;
		n=t;          //把较大的值赋给n
	}
	r=n%m;
	while(r)          //余数等于0时结束循环
	{                 //n/m = d1...r1
		n=m;          //  m   /    r1 = d2……r2   这里m的作用已经和上一式中的n相同，所以要把m的值赋给n
		m=r;          //           r1   /   r2 = d3……r3     r赋值给m同理
		r=n%m;        //                    r2    /  r3 = d4……r4     ......   
	}                
    /*所以循环的本质是同一个作用的变量不同情况的规律取值，如r1,r2到rn的变化！
	难怪有的问题可以用数组代替！*/
	printf("最大公约数：%d\n最小公倍数：%d\n",m,p/m);
	return  0;
}
